Tout ce qui est dit ci-dessous à été testé sur le portable Asus A17-TUF766IU-H7074T dont la configuration est notamment :
Variantes pour les autres portables d'équipement similaire :
A noter que la machine est de très bonne facture : bel écran, bonne qualité sonore, plastiques de qualité…
Au démarrage quand apparaît le menu appuyer sur la touche "e".
Ajouter nomodeset auprès du motquiet ou splash déjà présent. Appuyer sur F10.
A priori cela peut aussi être fait graphiquement en appuyant sur F6 (lors de l'apparition du menu Ubuntu) puis en validant nomodeset.
Donc commencer par installer Ubuntu "classiquement" puis suivre les étapes ci-dessous.
Le système fonctionne assez correctement avec le noyau 5.6 OEM sauf en ce qui concerne la gestion de la chaleurs (ventilateurs qui tourneront à fond pour rien). De nombreuses fonctionnalités ont été ajoutées à partir de la version 5.8 du noyau (notamment de gestion d'énergie et de l'architecture Renoir d'AMD) qu'il est donc conseillé d'utiliser.
Il reste cependant possible d'installer ce noyau avec la commande ci-dessous et de démarrer ensuite dessus.
sudo apt install linux-image-oem-20.04
Vous obtiendrez lors de l'installation de nombreux message du type W: Possible missing firmware /lib/firmware/amdgpu/. Ils sont à ignorer et sans incidence.
Si après installation d'Ubuntu l'interface graphique se charge, vous pouvez utiliser la méthode 1 qui est graphique.
Sinon les méthodes 2 ou 3.
Pour les experts, vous pouvez vérifier les sommes de contrôle en suivant ceci : https://askubuntu.com/questions/1142488/how-to-securely-download-a-new-kernel
Le logiciel Ubuntu Mainline Kernel Installer installable par un ppa permettra de faire l'installation et par la suite les mises à jour avec une interface graphique.
sudo add-apt-repository ppa:cappelikan/ppa sudo apt update sudo apt install mainline
Lancer Ubuntu Mainline Kernel Installer depuis le menu et installer la version 5.10.6 ou supérieure.
Source : https://github.com/bkw777/mainline
ubuntu-mainline-kernel.sh :$ wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
$ sudo install ubuntu-mainline-kernel.sh /usr/local/bin/
$ ubuntu-mainline-kernel.sh -i Finding latest version available on kernel.ubuntu.com Latest version is: v5.10.6, continue? (y/N)
Source et désinstallation :
https://linuxconfig.org/how-to-upgrade-kernel-to-latest-version-on-ubuntu-20-04-focal-fossa-linux
https://wiki.ubuntu.com/Kernel/MainlineBuilds
Au démarrage, passer "safe mode" et obtenir l'invite de commande. Télécharger depuis cette adresse https://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D les quatre paquets linux-headers…, linux-headers-…-generic, linux-image-unsigned…, linux-modules… dans la version souhaitée et les déposer quelque part ou vous saurez les retrouver et les installer.
Exemple de code avec la version 5.10.6 :
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.10.6/amd64/linux-headers-5.10.6-051006-generic_5.10.6-051006.202101091334_amd64.deb wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.10.6/amd64/linux-headers-5.10.6-051006_5.10.6-051006.202101091334_all.deb wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.10.6/amd64/linux-image-unsigned-5.10.6-051006-generic_5.10.6-051006.202101091334_amd64.deb wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.10.6/amd64/linux-modules-5.10.6-051006-generic_5.10.6-051006.202101091334_amd64.deb sudo dpkg -i *.deb
Les adresses étant pénibles à taper sans copier coller, vous pouvez télécharger depuis un autre OS et exécuter uniquement sudo dpkg -i *.deb dans le répertoire contenant les 4 fichiers.
Contrairement à ce qui est dit sur de nombreux sites qui ont essayé cette machine avec noyaux inférieurs à 5.8, presque tout fonctionne avec le noyau 5.10.6 et notamment testés :
Des petites erreurs apparaissent auss dans les premiers instants après le démarrage mais elles semblent sans incidence.
Ne fonctionne pas :
Il y a donc trois utilisations possible des deux processeurs GPU :
Par défaut c'est le GPU AMD seul qui est utilisé comme GPU.
Si vous voulez utiliser le eGPU Nvidia quelque soit la méthode il faut commencer par installer les pilotes correspondants (premier paragraphe ci dessous) puis choisir et appliquer une des méthodes décrites ci-dessus (à la demande, switch, utilisation permanente du eGPU Nvidia).
EDIT d'un autre utilisateur : Après quelques essais récents il semblerait que le ventilateur se déclenche moins fréquemment avec le eGPU Nvidia enclenché en permanence. EDIT Réponse du créateur de la page : Mais alors ne fonctionne-t-il tout simplement pas tout le temps à moyenne puissance au lieu d'utiliser des puissances variables ? Et qu'en est-il de la consommation ?
Cette installation est un préambule à l'utilisation de la carte graphique Nvidia. Voir paragraphe suivant pour l'utilisation en elle même.
Le driver nvidia en version 440 installé par défaut n'est pas suffisamment à jour pour cette machine et ne donnera pas toutes les fonctionnalités attendues. Il faut impérativement installer une version >= 450 par ppa.
$ sudo add-apt-repository ppa:graphics-drivers $ sudo apt-get update
Vérifier que la version "recommandée" est bien supérieure à 450 avec :
$ sudo ubuntu-drivers devices
Lancer alors l'installation avec :
$ sudo ubuntu-drivers autoinstall
Source : https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-20-04-focal-fossa-linux
$ sudo apt install nvidia-driver-450
$ sudo apt purge nvidia-*
$ lsmod | grep nouveau
Si vous n'obtenez rien en sortie c'est bon. Sinon exécuter :
$ sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist.conf" $ sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist.conf"
Après avoir installé les pilotes propriétaires, vous pourrez forcer l'utilisation du eGPU Nvidia en précédant la commande à exécuter de :
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia COMMANDE_A_EXECUTER
La variable d'environnement _ _VK_LAYER_NV_optimus=NVIDIA_only est destinée à à Vulkan ou EGL.
La variable d'environnement _ _GLX_VENDOR_LIBRARY_NAME=nvidia est destinée à GLX.
(pas d'espace entre les deux tirets bas).
Pour tester si cela fonctionne, essayer la commande ci-dessous, elle devrait vous renvoyer la marque et le modèle de votre carte graphique :
$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | egrep "(OpenGL vendor|OpenGL renderer|OpenGL version)" $ OpenGL vendor string: NVIDIA Corporation $ OpenGL renderer string: GeForce GTX 1660 Ti/PCIe/SSE2 $ OpenGL version string: 4.6.0 NVIDIA 450.66
Sans les commandes Prime Render, on obtiendrait le processeur graphique intégré comme réponse :
$ glxinfo | egrep "(OpenGL vendor|OpenGL renderer|OpenGL version)" $ OpenGL vendor string: X.Org $ OpenGL renderer string: AMD RENOIR (DRM 3.38.0, 5.8.8-050808-generic, LLVM 10.0.0) $ OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.0.8
~/.bashrc. Il faut redémarrer pour les modifications soient prises en compte ou exécuter en console source ~/.bashrc. alias prime-run="__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia" alias prime-run_vlc="prime-run vlc"
Si cela ne fonctionne pas, vous pourrez trouver plus d'informations ici (ce sont les sources utilisées pour ce paragraphe) :
En console :
watch -n 1 nvidia-smi
Observez les lignes qui seront mises à jour chaque seconde :
| 0 GeForce GTX 166... Off | 00000000:01:00.0 Off | N/A | | N/A 36C P8 1W / N/A | 6MiB / 5944MiB | 0% Default |
Lorsque le eGPU est au repos sa température est basse (36 °C ici) et la consommation de 1W.
Quand le eGPU est utilisé consommera au moins 2W (et chauffera…)
L'applet "Prime Render Offload Status" peut être ajoutée au tableau de bord avec "ajouter un composant graphique" sous KDE.
Elle devient verte que quand la carte nvidia est utilisée (quelques seconde au moins comme en regardant une vidéo, pas juste sur une commande instantanée trop brève) et reste noire sinon.
Source : https://store.kde.org/p/1411472/
Vous trouverez à l'adresse https://github.com/OlivierV78/switch_amd_nvidia tout le nécessaire pour basculer vers une utilisation du processeur Nvidia uniquement.
Il suffit de lancer double cliquer sur les fichiers `Switch AMD.desktop` ou `Switch Nvidia.desktop` pour basculer entre :
Les scripts fournis (qui s'annulent mutuellement) ne modifient que deux fichiers :
/usr/share/X11/xorg.conf.d/10-amdgpu.conf qui devient après modification :Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "amdgpu"
Option "PrimaryGPU" "no"
EndSection
/usr/share/X11/xorg.conf.d/10-nvidia.conf qui devient après modification :Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
Option "PrimaryGPU" "yes"
ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
Option "UseEdidDpi" "False"
Option "DPI" "96 x 96"
EndSection
Option "UseEdidDpi" "False" Option "DPI" "96 x 96"
Sans cette correction on obtiendrait :
$ xdpyinfo | grep -B2 resolution $ screen #0: $ dimensions: 1920x1080 pixels (508x285 millimeters) $ resolution: 72x72 dots per inch
D'autre scripts proposent un switch similaire mais ne modifient pas les DPI et touchent inutilement d'autres fichiers comme celui ci dont je me suis inspiré : https://github.com/dglt1/optimus-switch-amd-sddm
Source : https://us.download.nvidia.com/XFree86/Linux-x86_64/450.57/README/dynamicpowermanagement.html
Copier le code ci-dessous dans /lib/udev/rules.d/80-nvidia-pm.rules
# Remove NVIDIA USB xHCI Host Controller devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{remove}="1"
# Remove NVIDIA USB Type-C UCSI devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{remove}="1"
# Remove NVIDIA Audio devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{remove}="1"
# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"
# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"
Copier le code ci-dessous dans /etc/modprobe.d/nvidia.conf
options nvidia "NVreg_DynamicPowerManagement=0x02"
Et redémarrer*
pour l'utilisation d'un second écran sur le HDMI, avec le pilote nvidia propriétaire, il peut être nécessaire d'ajouter cette option dans dans /etc/default/grub : à la variable GRUB_CMDLINE_LINUX_DEFAULT, ajouter : amdgpu.exp_hw_support=1 ce qui donne par exemple
... GRUB_CMDLINE_LINUX_DEFAULT="splash quiet" GRUB_CMDLINE_LINUX="amdgpu.exp_hw_support=1" ...
puis :
sudo update-grub
au reboot le 2e écran est détecté.
Le bug a été corrigé à partir de la version 5.10.6 du noyau mainline le 10/01/2021 (car le bluetooth ne fonctionnait plus du noyau 5.9.1 au noyau 5.10.5).
Éditer le fichier /etc/default/grub.
sudo nano /etc/default/grub
Modifier la ligne GRUB_CMDLINE_LINUX_DEFAULT pour y ajouter nvme_core.default_ps_max_latency_us=5500.
Si la ligne était vide, cela donnera :
GRUB_CMDLINE_LINUX="nvme_core.default_ps_max_latency_us=5500"
Terminer ensuite en console par
sudo update-grub
Selon le SSD avec sources :
Si lors de la mise en veille de votre machine celle-ci se réveille sans raison, suivez cette procédure qui a pour but d'éteindre l'usb.
Créer le fichier /etc/pm/sleep.d/90_unbind_usb5.
$ sudo nano /etc/pm/sleep.d/90_unbind_usb5
Et y coller le code suivant (avec édition coller) :
#!/bin/sh
#copy to /etc/pm/sleep.d
LOGFILE="/var/log/sleep.log"
case "$1" in
sleep|suspend)
echo "Unbinding USB 5" >> "$LOGFILE"
echo -n "0000:05:00.4" >/sys/bus/pci/drivers/xhci_hcd/unbind
;;
resume|thaw)
echo "Rebinding USB 5" >> "$LOGFILE"
echo -n "0000:05:00.4" >/sys/bus/pci/drivers/xhci_hcd/bind
;;
esac
Puis rendre le fichier exécutable :
sudo chmod +x /etc/pm/sleep.d/90_unbind_usb5
Si au réveil vous rencontrer des problèmes avec l'ethernet qui ne fonctionne plus au réveil, coller le code ci-dessous dans le fichier /etc/pm/sleep.d/80_restart_r8169
$ sudo nano /etc/pm/sleep.d/80_restart_r8169
#!/bin/sh
#copy to /etc/pm/sleep.d
LOGFILE="/var/log/sleep.log"
case "$1" in
resume|thaw)
modprobe -r r8169 \
&& echo "Removed r8169" >> "$LOGFILE" \
&& modprobe -i r8169 \
&& echo "Inserted r8169" >> "$LOGFILE"
;;
esac
Et rendez le exécutable.
sudo chmod +x /etc/pm/sleep.d/80_restart_r8169
Source : https://forum.mxlinux.org/viewtopic.php?f=107&t=59457
: Toutes ces modifications sont ignorées par le système. Paragraphe en cours d'étude… Toute idée bienvenue.
Commencez par vérifier le niveau APM du disque :
sudo hdparm -B /dev/sda
Puis par en avoir confirmation en tapant en console la commande suivante plusieurs fois de suite toutes les 10 à 15 secondes.
sudo smartctl -a /dev/sda | grep Load_Cycle_Count
Si vous entendez un petit clac à chaque fois et voyez le compteur augmenter 1 alors vous êtes dans le cas d'un disque qui se met trop rapidement en veille. Mettez en oeuvre ce qui suit pour éviter ces redémarrages intempestifs.
Pour gérer exactement le temps au bout duquel le disque se met en veille, éditez le fichier /etc/hdparm.conf avec sudo nano /etc/hdparm.conf
sudo nano /etc/hdparm.conf
Et collez y en bas le code :
/dev/sda {
apm = 254 # paramètre par défaut en mode demarrage secteur
spindown_time = 242
}
Paramètres de spindow (extrait de HDPARM) définit le temps d'inactivité après lequel le disque se met en veille (exemple spindown_time = 242 pour 1 heure)
Éditez le fichier /etc/hdparm.conf avec sudo nano /etc/hdparm.conf
sudo nano /etc/hdparm.conf
Et collez y en bas le code :
/dev/sda {
apm = 128
}
Vous pouvez adapter la paramètres à vos usages en consultant les détails ci-dessous.
Paramètres pour l'APM (Advanced Power Management) :
Incorrect car le paramètre 128 permet le parcage des têtes
Sources :
Deux projets semblent prometteur mais je n'ai pas réussi à les faire fonctionner totalement :
sudo ./set_rgb.sh kbbl_mode 0
Voir aussi du côté de Asus-nb-ctl (Asus notebook control). A tester…
Autres qui ne semblent pas fonctionner
Cette page dit au paragraphe ""Aura" RGB keyboard LEDs " que cela fonctionnerait : https://forum.mxlinux.org/viewtopic.php?f=107&t=59457
I: The initramfs will attempt to resume from /dev/nvme0n1p4 I: (UUID=3a09b433-78cf-4d2c-8012-093436cd03d0) I: Set the RESUME variable to override this.
Ce message signifie qu'en cas d'hibernation la sauvegarde et le réveil se feront par défaut depuis la partition swap (ici /dev/nvme0n1p4).
Pour mettre éviter ce message et confirmer cette partition, exécuter :
$ printf "RESUME=UUID=$(blkid | awk -F\" '/swap/ {print $2}')\n" | sudo tee /etc/initramfs-tools/conf.d/resume
$ sudo update-initramfs -u -k all
Puis redémarrer.
Source : https://askubuntu.com/questions/1124253/missing-firmware-for-amdgpu
On peut blacklister le module ucsi_ccg qui provoque une erreur ucsi_ccg … failed au boot
$ echo "blacklist ucsi_ccg" >> /etc/modprobe.d/blacklist.conf
Également blacklisté en raison d'une autre erreur au démarrage
$ echo "blacklist thinkpad_acpi" >> /etc/modprobe.d/blacklist.conf
Source : https://ubuntuforums.org/showthread.php?t=2207830&page=2
Si vous obtenez au démarrage ce message, il faut apparemment passer l'option "nomodeset" à grub ce qu'une installation correcte des pilotes nvidia fait automatiquement.
usci_acpi USBC000:00: PPM init failed (-110)
Source et détails : https://askubuntu.com/questions/1254362/issues-while-booting-ubuntu-20-04-lts-after-installation-on-asus-tuf-a15-fa506i
Si la machine ne s'arrête pas et que vous obtenez un message comme "a stop job is running" il faudrait idéalement trouver le processus qui bloque l'arrêt. Ceci étant fastidieux il semblerait que l'installation de watchdog résolve le problème.
sudo apt install watchdog sudo systemctl start watchdog.service sudo systemctl enable watchdog.service
Une autre solution encore moins propre est de limiter l'attente à par exemple 5 secondes mais cela peut provoquer des problèmes par la fermeture pas très régulière des processus en cause.
sudo nano /etc/systemd/system.conf
Puis modifier le paramètre DefaultTimeoutStopSec=10s
Et relancer le démon.
sudo systemctl daemon-reload
Sources :
Ce serait une nouvelle fonctionnalité intégrée au noyau mais cela ne semble pas fonctionner
N.B. : il faut remplacer BAT0 par BAT1 dans les lignes ci-dessous
Sources :
Contributeur principal : Olivier V